System for, method of registering a connection, computer readable medium and robot appliance

ABSTRACT

The present invention presents an improved apparatus and method for monitoring a material processing system, wherein the material processing system includes a processing tool, a number of RF-responsive electrical sensors coupled to the processing tool to generate and transmit electrical data, and a sensor interface assembly (SIA) configured to receive the electrical data from the plurality of RF-responsive electrical sensors.

The invention relates to a system for registering a connection between afirst software module and a second software module.

The invention further relates to a method of registering a connectionbetween a first software module and a second software module.

The invention further relates to a computer readable medium havingstored thereon instructions for causing one or more processing units toperform such a method.

The invention further relates to a robot appliance comprising such asystem.

An embodiment of such a system and method is disclosed in EP 09 407 47.Here, it is disclosed that classes of a software system can be added,changed or removed during the program run, by means of a system manager.Hereto, information about subsystems in modules in a modular computersystem is included. A class, is a software structure containing one ormore attributes and methods that can be used to manipulate theseattributes. A subsystem is an instance of a class, which provides awell-defined functionality. Other subsystems may use the interfacesprovided by the subsystem in order to use its functionality. A module isa software entity containing one or more subsystems. A module is adynamically linkable entity. Modules are used internally by the systemmanager. When a module is downloaded, the system manager calls themodule to get information about what subsystems the module contains.When a subsystem is needed, a request is made to the system manager tofind the location of the desired subsystem. This system manager findsthe module containing the subsystem, orders the module to start thesubsystem and returns the location of the requested subsystem. Then thesubsystem can be used directly as long as required. The system manageris not needed until another subsystem is to be found. However, if asubsystem is not present upon request, the system manager cannot providethe location of the requested subsystem and thus cannot provide accessto the interfaces of the requested subsystem.

It is an object of the invention to provide a system according to theopening paragraph that registers a connection between two softwaremodules in an improved way. To achieve this object, the first softwaremodule of the system comprises first port means and the second softwaremodule of the system comprises second port means; the first port meansis being conceived to connect to the second port means and the secondport means is being conceived to connect to the first port means; thefirst port means comprises registration means conceived to register thesecond port means as a port to which to connect to; and the secondsoftware module comprises notification means conceived to notify thefirst port means of a change of an availability of the second port meansas a port to which to connect to.

The software modules are building blocks used to implement separatepieces of functionality. For example, a software module can implement afunctionality such as sensors, actuators, vision algorithms, controlbehaviors, state estimators, etc. A software module can be started as aseparate executable in an operating system. A software module has inputand/or output ports to share data and they contain an algorithm toprocess the data. A port from one module can be connected to anotherport from another module, thereby creating a connection between the twomodules. A port from one module can be connected to different ports ofdifferent modules. By registering within each port to which port it canbe connected, the ports themselves have the knowledge to which portsthey can be connected. Therefore, the ports themselves can be notifiedabout a change in the availability of a port to which they can beconnected. Then the ports can take appropriate action based upon thecontents of the notification message.

An embodiment of the system according to the invention is described inclaim 2. By registering also the ports to which a connection isestablished, the software module can keep track of the ports to which aconnection is expected and the ports to which a connection isestablished. Therefore, the software module has the knowledge if all itsconnections have been established yet.

A further embodiment of the system according to the invention isdescribed in claim 3. By including information about a creation of aport to which a connection is expected, the notified port can takeappropriate actions, like creating the connection to the created port.Furthermore, by including information about a destruction of a port towhich a connection is established, the notified port can takeappropriate actions for this event. For example, the notified port canclose the connection and register the destructed port to theregistration of ports to which to connect to. Furthermore, it canrequest the software module, which comprises the destructed port, to beadded to this software module's registration as a port to be notified inthe case that the destructed port is created again.

It is a further object of the invention to provide a method according tothe opening paragraph that registers a connection between two softwaremodules in an improved way. To achieve this object, the first softwaremodule of the method comprises first port means and the second softwaremodule of the method comprises second port means; the first port meansbeing conceived to connect to the second port means and the second portmeans being conceived to connect to the first port means; and the methodcomprises registering, by the first port means, the second port means asa port to which to connect to; notifying, by the second software module,the first port means of a change of an availability of the second portmeans as a port to which to connect to.

Embodiments of the method are described in claims 5 and 6.

These and other aspects of the invention will be apparent from andelucidated with reference to the embodiments described hereinafter asillustrated by the following Figures

FIG. 1 schematically illustrates a module architecture;

FIG. 2 illustrates method steps of a registration of a software module;

FIG. 3 illustrates method steps of the creation of a module;

FIG. 4 illustrates method steps of the creation of a connection port;

FIG. 5 illustrates the main parts of the system according to theinvention in a schematic way.

Modules are computer readable code that together form building blocksused to implement separate pieces of functionality. For example, modulescan implement sensors, actuators, vision algorithms, control behavior,state estimators, a robot application etc. A module is an independentsoftware process that operates asynchronously with respect to othermodules within, for example, a robot application. The resources neededby the module, such as processor time and memory, are provided by theoperating system. A module is started as a separate executable in theoperating system. Furthermore, modules can be implemented independentlyfrom other modules.

FIG. 1 schematically illustrates a module architecture. Module 100comprises an output port 104 and module 102 comprises an input port 106and an output port 108. The output port 104 of module 100 is connectedto the input port 106 of module 102 through connection 110. An input andan output port that are connected to each other share data. The modulecontains an algorithm to process this data. Ports can be connected toeach other at runtime if the attributes of the ports match. A port hasthe following attributes: port type, data type, buffer type, and triggertype.

port type: there are three different types of ports. The first type areinput ports. These ports are used to read data from other modules. Thesecond type are output ports. These ports are used to write data toother modules. Reading and writing from these ports is doneasynchronously. That is, if one module writes data to another module, itwill not wait until the data has been received, but instead it willcontinue executing its algorithm. The third type are bi-directionalports, from which one can read and write. This third type allowssynchronous communication.

data type: a port supports preferably one data type only. Ports thatshare the same data type can be connected to each other. Different datatypes, such as strings, byte, integers and floats, or arrays of thesetypes, etc. can be used within the architecture.

buffer type: because input and output ports operate asynchronously, datacan be sent to an output port, without being read yet. Therefore, thebuffer type is defined of the port. The first buffer type is the “keeplast” buffer, which stores a new data item that has arrived and removesthe old data. The second buffer type is the “keep first” buffer, whichkeeps the first unread data item and removes the newly arrived dataitems. The third buffer type is the “keep all” buffer, which stores allreceived and unread data items.

trigger type: there are two types of mechanisms to trigger the transferof data between ports. The first mechanism is the push mechanism. A pushoutput port directly transfers data to push-input ports connected to it,when the algorithm of the module performs a write action. This generatesan external event at the input ports of the connected modules. Thesecond mechanism is the pull mechanism. A pull input port sends arequest for new data to the pull output port it is connected to when thealgorithm of the modules performs a read action. This generates anexternal event at the output port of the connected modules. Allcombinations between push/pull input ports and push/pull output portsare allowed. However, for the combination push input port and pulloutput port, there's no port that takes the initiative to transfer data.

Ports can also have more (or less) attributes with different typeswithout departing from the concept of the invention.

Each port can be connected to multiple other ports. For instance, if anoutput port is connected to multiple input ports, then the input portsreceive a copy of the data being transferred.

FIG. 2 illustrates method steps of a registration of a software module.As previously described, a module is an independent process. Therefore,in order to connect modules to each other, modules and ports must “find”each other. This is accomplished by giving modules and ports a uniquename and using a registry. The registry is a process that maintains alist of the names of all running modules. Within the first step S200,module A is created and sends its name and additional information likeits process identification to the registry in order to get registered.Once the module is registered it can search for other modules by name.Module A comprises an output port oA that wants to connect to an inputport iB of an other module B. Now, within step S202, module A asks theregistry for the process identification of the other module with modulename B. In the case that module with name B is not available, the methodproceeds to step S204. In the case that the module with name B isavailable, the method proceeds to step S206.

Within step S204, module A asks the registry to be registered within thenotification list of the registry to receive a notification if module Bis created. This notification list comprises a table with the names ofthe modules that need to be notified and the names of the modules forwhich a creation notification needs to be sent. For example: Modules tobe notified Upon creation of Module A Module B Module X Module YOther tables or collections are also conceivable, such as a collectionper module that needs to be notified or a collection per module that iscreated.

Within step S206, module A asks module B to connect to input port iB. Inthe case that input port iB is not available, the method proceeds tostep S208. In the case that input port iB is available, the methodproceeds to step S210.

Within step S208, module A asks module B to be registered within thenotification list of module B to receive a notification upon creation ofinput port iB. Module B registers the name of module A into itsnotification list. This notification list comprises the names of allmodules that need to be notified in the case that a port is created orremoved. The notification list comprises a mapping of module names thatneed to be notified and ports that are created or removed. Thenotification list can also be a collection per port of module names thatneed to be notified. Furthermore, output port oA registers that theconnection to input port iB is not yet established.

Within step S210, a connection between output port oA of module A andinput port iB of module B is established. Output port oA also comprisesa list of port names to which a connection is established and adds inputport iB to this “established” list. The input port iB is then removedfrom the list of output port oA with ports to which a connection couldnot be established yet. Further, input port iB has its own “established”list and registers output port oA within this list as a port to which aconnection is established.

FIG. 3 illustrates method steps of the creation of a module. Within stepS300, module A tries to establish a connection to input port iB ofmodule B. However, because module B is not registered yet with theregistry, module A is added to the notification list of the registry tobe notified if module B is created.

Within step S302, module B is started and registers itself with theregistry. The registry registers module B with its module name and itsprocess identification.

Within the next step S304, the registry checks its notification list andnotifies module A of the creation of module B.

Within step S306, module A asks module B to connect to input port iB. Inthe case that input port iB is not available, the method proceeds tostep S208 as previously described. In the case that input port iB isavailable, the method proceeds to step S210 as previously described.

FIG. 4 illustrates method steps of the creation of a connection port.Within step S400, module A tries to establish a connection betweenoutput port oA of module A and input port iB of module B. Module Arequests the registry for the process identification of module B andmodule A receives this process identification of the registry. With theuse of this identification, module A asks module B to establish aconnection to input port iB. However, input port iB is not created yet,and module B adds module A to the notification list of module B to benotified if input port iB is created.

Within step S402, module B creates an input port with name iB. Module Bchecks its notification list and notified module A that input port iB iscreated.

Within the next step S404, output port oA of module A requests inputport iB of module B to establish a connection.

Within the next step S210 as previously described in performed and aconnection between output port oA and input port iB is established.

For registration of destruction of a port or a module, the module andthe registry also have a notification list. This “destruction”notification list of a module keeps track of all modules that need to benotified upon destruction of a port of a module. The “destruction”notification list of the registry keeps track of all modules that needto be notified if a module stops executing.

The order in the described embodiments of the method of the currentinvention is not mandatory, a person skilled in the art may change theorder of steps or perform steps concurrently using threading models,multi-processor systems or multiple processes without departing from theconcept as intended by the current invention.

FIG. 5 illustrates the main parts of the system according to theinvention in a schematic way. The system 500 comprises a microprocessor502, a software bus 504 and a memory 506. The memory 508 can be a randomaccess memory (RAM). The memory 506 communicates with the microprocessor502 through software bus 504. The memory 506 comprises computer readablecode 508, 510, 512, 514, 516, and 518. The computer readable code 508 isdesigned as a software module that implements the functionality of amotion sensor. The computer readable code 514 is designed as a softwaremodule that implements the functionality of a reaction in response tothe sensed motion. The reaction can be movement, an alert etc. Thecomputer readable code 510 is designed to implement the functionality ofan output port as previously described. The computer readable code 512is designed to implement the functionality of registering the ports towhich a connection is not established yet. Furthermore, the computerreadable code 512 is designed to implement the functionality ofregistering the ports to which a connection is established. The computerreadable code 516 is designed to implement the functionality of an inputport as previously described. The computer readable code 518 is designedto implement the functionality of registering the module that must benotified in the case that a port becomes available as previouslydescribed. The system 500 is comprised within a robot appliance 520.

It should be noted that the above-mentioned embodiments illustraterather than limit the invention, and that those skilled in the art willbe able to design many alternative embodiments without departing fromthe scope of the appended claims. In the claims, any reference signsplaced between parentheses shall not be construed as limiting the claim.The word “comprising” does not exclude the presence of elements or stepsother than those listed in a claim. The word “a” or “an” preceding anelement does not exclude the presence of a plurality of such elements.The invention can be implemented by means of hardware comprising severaldistinct elements, and by means of a suitably programmed computer. Inthe system claims enumerating several means, several of these means canbe embodied by one and the same item of computer readable software orhardware. The mere fact that certain measures are recited in mutuallydifferent dependent claims does not indicate that a combination of thesemeasures cannot be used to advantage.

1. System (500) for registering a connection between a first softwaremodule (508) and a second software module (506) wherein: the firstsoftware module (508) comprises first port means (510) and the secondsoftware module (506) comprises second port means (516), the first portmeans (510) being conceived to connect to the second port means (516)and the second port means (516) being conceived to connect to the firstport means (510); the first port means (510) comprises registrationmeans (512) conceived to register the second port means (516) as a portto which to connect to; and the second software module (506) comprisesnotification means (518) conceived to notify the first port means (510)of a change of an availability of the second port means (516) as a portto which to connect to.
 2. System (500) according to claim 1, whereinthe registration means (512) of the first port means (510) is conceivedto register the second port means (516) as a port to which theconnection is established.
 3. System (500) according to claim 1, whereinthe availability of the second port indicates a creation of the secondport means (516) or a destruction of the second port means (516). 4.Method of registering a connection between a first software module (508)and a second software module (506) wherein the first software module(508) comprises first port means (510) and the second software module(506) comprises second port means (516), the first port means (510)being conceived to connect to the second port means (516) and the secondport means (516) being conceived to connect to the first port means(510); and the method comprises registering, by the first port means(510), the second port means (516) as a port to which to connect to;notifying, by the second software module (506), the first port means(510) of a change of an availability of the second port means (516) as aport to which to connect to.
 5. Method according to claim 4, the methodcomprising registering, by the first port means (510), the second portmeans (516) as a port to which the connection is established.
 6. Methodaccording to claim 4, wherein the availability of the second portindicates a creation of the second port or a destruction of the secondport.
 7. A computer readable medium having stored thereon instructionsfor causing one or more processing units to perform the method accordingto claim
 4. 8. Robot appliance (520) comprising the system (500)according to claim 1.